Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

tc-wrapper

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tc-wrapper

NodeJS wrapper for tc command (traffic control on linux)

  • 1.0.12
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
5
Maintainers
1
Weekly downloads
 
Created
Source

tc-wrapper

Wrapper & parser of linux tc command (traffic control).

Allow setting, consulting and deleting rules of delay, jitter, bandwidth and corruption

Installation

This module is installed via npm:

npm install --save tc-wrapper

Changelog

  • 1.0.8: Removed network parameter and included srcNetwork & dstNetwork paramenters

Usage

The library export a instantiable class that has three major methods: del, get and set, for deleting, fetching and setting tc rules. Keep in mind that set method will call del before execute, so it will clean all the rules before aplying the new ones.

Allowed targeting

Currently tc-wrapper only supports ip traffic, and can match by network, src and dst ports.

Allowed modificators

  • rate: Bandwith limitation, htb algorith will be used, tbf is not supported (yet).
  • delay: Round trip time of packets, will be added as additional time.
  • jitter: Delay variation normal-distributed.
  • loss: Packet loss, in percentage.
  • corrupt: Packet corruption, in percentage.

Clean all rules for eth0

import TCWrapper from 'tc-wrapper';

const tcWrapper = new TCWrapper('eth0');

tc.Wrapper.get().then((rules) => {
  /* rules looks like:
  {
    "outgoing": {
      "srcNetwork=0.0.0.0/0,protocol=ip": {
        "delay": "1.0ms",
        "jitter": "0.5%",
        "loss": "3%",
        "corrupt": "2%",
        "rate": "10Mbit"
      }
    },
    "incoming": {
      "dstNetwork=192.168.1.1/32,protocol=ip": {
        "loss": "9%",
      },
      "dstNetwork=192.168.1.1/32,srcNetwork=10.10.10.0/28,srcPort=80,protocol=ip": {
        "rate": "100Mbit",
      }
    }
  }
  */
});

Increase output packets Round Trip Time by 20 ms

import TCWrapper from 'tc-wrapper';

const tcWrapper = new TCWrapper('eth0');

const myRules = {
  outgoing: {
    'dstNetwork=0.0.0.0/0,protocol=ip':{
      delay: '20ms'
    }
  }
};

tc.Wrapper.set(myRules).then((rules) => {
  // Rules set!
});

Limit incoming bandwith of eth0 to 20 Mbit

import TCWrapper from 'tc-wrapper';

const tcWrapper = new TCWrapper('eth0');

const myRules = {
  incoming: {
    'srcNetwork=0.0.0.0/0,protocol=ip':{
      rate: '20Mbit'
    }
  }
};

tc.Wrapper.set(myRules).then((rules) => {
  // Rules set!
});

Enable debug of module

This module uses debug for debugging, you can enable debug messages of all modules with:

DEBUG=tc-wrapper*

Each module has custom debug label. Example:

DEBUG=tc-wrapper:TCfilterParser

Will only show debug messages about TCfilterParser module.

Run tests

npm test

License (MIT)

In case you never heard about the MIT license.

See the LICENSE file for details.

FAQs

Package last updated on 14 Jan 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc